package splug.cjk;

import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.Socket;
import java.util.ArrayList;

import splug.cjk.packet.FriendPacket;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.widget.*;

public class BBSContent extends Activity {

	private ArrayList<Content> comment = new ArrayList<Content>();
	private ContentAdapter m_adapter;
	private String id; //나의 아이디를 담고 있는 스트링
	private String author; //글을 쓴 사람의 아이디를 담고 있는 스트링

	/**
	 * 댓글을 나타내기 위한 어댑터를 정의한다
	 * @author jck
	 *
	 */
	private class ContentAdapter extends ArrayAdapter<Content> {

		private ArrayList<Content> items;

		public ContentAdapter(Context context, int textViewResourceId, ArrayList<Content> items) {
			super(context, textViewResourceId, items);
			this.items = items;
		}
		@Override
		public View getView(int position, View convertView, ViewGroup parent) {
			View v = convertView;
			if (v == null) {
				LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
				v = vi.inflate(R.layout.comment_property, null);
			}
			Content p = items.get(position);
			if (p != null) {
				TextView tt = (TextView) v.findViewById(R.id.toptext);
				TextView bt = (TextView) v.findViewById(R.id.bottomtext);
				if (tt != null){
					tt.setText(p.getTitle());
				}
				if(bt != null){
					bt.setText(p.getId() + "님 께서 댓글을 남기셨습니다.");
				}
			}
			return v;
		}
	}

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.bbs_content);
		setTitle("게시물 내용");

		//ID, 콘텐츠, 시간을 인텐트로 부터 받아온다
		Bundle b = this.getIntent().getExtras();
		id = b.getString("ID");
		author = b.getString("AUTHOR");
		String contents = String.valueOf(b.getString("CONTENT"));
		String time = String.valueOf(b.getString("TIME"));

		TextView text_content = (TextView) findViewById(R.id.ed_contents);
		TextView text_time = (TextView) findViewById(R.id.time);
		Button back = (Button) findViewById(R.id.btn_bbs_content_back);
		Button addfriend = (Button) findViewById(R.id.btn_bbs_content_addfriend);
		Button information = (Button) findViewById(R.id.btn_bbs_content_information);
		Button report = (Button) findViewById(R.id.btn_bbs_content_report);

		text_content.setText(contents);
		text_time.setText(time);
		
		//뒤로 가기 버튼이 눌렸을 때
		back.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				//액티비티를 종료한다
				finish();
			}
		});
		
		//친구 추가 버튼이 눌렸을 때
		addfriend.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				//내 아이디가 친구요청 아이디와 같으면 예외처리 한다
				if(id.equals(author)){
					Toast.makeText(BBSContent.this, "자기 자신에게 친구 요청을 할 수 없습니다", Toast.LENGTH_SHORT).show();
				}

				//친구 요청 패킷을 보낸다
				else{
					try {
						Socket socket = new Socket(LetsGoActivity.server_ip, 2007);

						InputStream is = socket.getInputStream();
						OutputStream os = socket.getOutputStream();

						OutputStreamWriter osw = new OutputStreamWriter(os);
						InputStreamReader isr = new InputStreamReader(is);

						osw.write(16);
						osw.flush();

						int ack = isr.read(); 

						if(ack == '1'){
							FriendPacket packet = new FriendPacket(null, id, author);
							ObjectOutputStream output = new ObjectOutputStream(os);
							output.writeObject(packet);

							ack = isr.read();

							if(ack == '1'){

								Toast.makeText(BBSContent.this, "친구 요청 완료!", Toast.LENGTH_SHORT).show();
								finish();
							}
							else if(ack == '0'){
								Toast.makeText(BBSContent.this, "해당하는 회원을 찾을 수 없습니다", Toast.LENGTH_SHORT).show();
							}
							else if(ack == '2'){
								Toast.makeText(BBSContent.this, "이미 친구 요청을 하였습니다", Toast.LENGTH_SHORT).show();
							}
						}
						else{
							Toast.makeText(BBSContent.this, "네트워크 연결상대가 좋지 않습니다", Toast.LENGTH_SHORT).show();
							finish();
						}


					} catch (Exception e) {
						Toast.makeText(BBSContent.this, "네트워크 연결상대가 좋지 않습니다", Toast.LENGTH_SHORT).show();
						finish();
					}
				}
			}
		});
		
		//글쓴이 정보보기 버튼이 눌렸을 때
		information.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				//정보보기 액티비티를 생성한다
				Intent intent = new Intent(BBSContent.this, PersonInfo.class);
				Bundle b = new Bundle();
				b.putString("ID", author);
				intent.putExtras(b);
				startActivity(intent);
			}
		});
		
		//신고하기 버튼이 눌렸을 때
		report.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				//새로운 액티비티를 생성한다
				Intent intent = new Intent(BBSContent.this, ReportSimple.class);
				Bundle b = new Bundle();
				b.putString("ID", id);
				b.putString("AUTHOR", author);
				intent.putExtras(b);
				startActivity(intent);
			}
		});
	}

}
